summaryrefslogtreecommitdiff
path: root/src/pages/my/transaction/[id].js
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-01-26 17:02:02 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-01-26 17:02:02 +0700
commit902e5dabbb1ab0612764983c094af398e5f636ee (patch)
treeb1b33fed082204be057c50053aee15eede6cce25 /src/pages/my/transaction/[id].js
parente340f5c4f4c47cde90e7676fcf71b55ef50e7c23 (diff)
Invoice and invoice detail
Diffstat (limited to 'src/pages/my/transaction/[id].js')
-rw-r--r--src/pages/my/transaction/[id].js89
1 files changed, 89 insertions, 0 deletions
diff --git a/src/pages/my/transaction/[id].js b/src/pages/my/transaction/[id].js
new file mode 100644
index 00000000..09bf1ec7
--- /dev/null
+++ b/src/pages/my/transaction/[id].js
@@ -0,0 +1,89 @@
+import AppBar from "@/components/layouts/AppBar";
+import Layout from "@/components/layouts/Layout";
+import LineDivider from "@/components/elements/LineDivider";
+import WithAuth from "@/components/auth/WithAuth";
+import { useEffect, useState } from "react";
+import apiOdoo from "@/core/utils/apiOdoo";
+import { useRouter } from "next/router";
+import { useAuth } from "@/core/utils/auth";
+import VariantCard from "@/components/variants/VariantCard";
+import currencyFormat from "@/core/utils/currencyFormat";
+import Disclosure from "@/components/elements/Disclosure";
+import DescriptionRow from "@/components/elements/DescriptionRow";
+import { TransactionDetailAddress } from "@/components/transactions/TransactionDetail";
+import { SkeletonList } from "@/components/elements/Skeleton";
+
+export default function DetailTransaction() {
+ const router = useRouter();
+ const { id } = router.query;
+ const [ auth ] = useAuth();
+ const [ transaction, setTransaction ] = useState(null);
+
+ useEffect(() => {
+ if (auth && id) {
+ const loadTransaction = async () => {
+ const dataTransaction = await apiOdoo('GET', `/api/v1/partner/${auth?.partner_id}/sale_order/${id}`);
+ setTransaction(dataTransaction);
+ }
+ loadTransaction();
+ }
+ }, [ auth, id ]);
+
+ return (
+ <WithAuth>
+ <Layout className="pb-4">
+ <AppBar title="Detail Transaksi" />
+
+ { transaction ? (
+ <>
+ <div className="p-4 flex flex-col gap-y-4">
+ <DescriptionRow label="Status Transaksi">
+ <span className="badge-green">Pending Quotation</span>
+ </DescriptionRow>
+ <DescriptionRow label="No Transaksi">
+ { transaction?.name }
+ </DescriptionRow>
+ <DescriptionRow label="Purchase Order">
+ { transaction?.purchase_order_name || '-' }
+ </DescriptionRow>
+ <DescriptionRow label="Ketentuan Pembayaran">
+ { transaction?.payment_term }
+ </DescriptionRow>
+ <DescriptionRow label="Nama Sales">
+ { transaction?.sales }
+ </DescriptionRow>
+ <DescriptionRow label="Waktu Transaksi">
+ { transaction?.date_order }
+ </DescriptionRow>
+ </div>
+
+ <LineDivider />
+
+ <Disclosure
+ label="Detail Produk"
+ />
+
+ <div className="mt-2 p-4 pt-0 flex flex-col gap-y-3">
+ { transaction?.products?.map((product, index) => (
+ <VariantCard
+ key={index}
+ data={product}
+ />
+ )) }
+ <div className="flex justify-between mt-3 font-medium">
+ <p>Total Belanja</p>
+ <p>{ currencyFormat(transaction?.amount_total || 0) }</p>
+ </div>
+ </div>
+
+ <TransactionDetailAddress transaction={transaction} />
+ </>
+ ) : (
+ <div className="p-4 py-6">
+ <SkeletonList number={12} />
+ </div>
+ ) }
+ </Layout>
+ </WithAuth>
+ );
+} \ No newline at end of file